From 8cafd3c5a7e214610ad55677e3c8cea55c974434 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Thu, 13 Oct 2016 16:06:03 +0200 Subject: [PATCH] menuitem: Stop implementing GtkActivatable --- demos/widget-factory/widget-factory.ui | 31 --- gtk/gtkcheckmenuitem.c | 95 +-------- gtk/gtkmenuitem.c | 260 ------------------------- gtk/gtkmenuitemprivate.h | 2 - 4 files changed, 1 insertion(+), 387 deletions(-) diff --git a/demos/widget-factory/widget-factory.ui b/demos/widget-factory/widget-factory.ui index 7b87e28bd3..3ea03b6fe0 100644 --- a/demos/widget-factory/widget-factory.ui +++ b/demos/widget-factory/widget-factory.ui @@ -2243,7 +2243,6 @@ microphone-sensitivity-medium-symbolic 1 - 0 _File 1 @@ -2253,7 +2252,6 @@ microphone-sensitivity-medium-symbolic _New 1 - 0 1 @@ -2261,7 +2259,6 @@ microphone-sensitivity-medium-symbolic _Open 1 - 0 1 @@ -2269,7 +2266,6 @@ microphone-sensitivity-medium-symbolic _Save 1 - 0 1 @@ -2277,21 +2273,18 @@ microphone-sensitivity-medium-symbolic Save _As 1 - 0 1 1 - 0 _Quit 1 - 0 1 app.quit @@ -2303,7 +2296,6 @@ microphone-sensitivity-medium-symbolic 1 - 0 _Edit 1 @@ -2314,7 +2306,6 @@ microphone-sensitivity-medium-symbolic Cu_t 1 1 - 0 1 @@ -2322,7 +2313,6 @@ microphone-sensitivity-medium-symbolic _Copy 1 - 0 1 @@ -2330,7 +2320,6 @@ microphone-sensitivity-medium-symbolic _Paste 1 - 0 1 @@ -2338,7 +2327,6 @@ microphone-sensitivity-medium-symbolic _Delete 1 - 0 1 win.delete @@ -2364,7 +2352,6 @@ microphone-sensitivity-medium-symbolic _Check 1 1 - 0 1 @@ -2374,7 +2361,6 @@ microphone-sensitivity-medium-symbolic 1 1 0 - 0 1 @@ -2383,7 +2369,6 @@ microphone-sensitivity-medium-symbolic _Check 1 1 - 0 1 @@ -2391,7 +2376,6 @@ microphone-sensitivity-medium-symbolic _Check 1 - 0 1 @@ -2400,7 +2384,6 @@ microphone-sensitivity-medium-symbolic _Check 1 0 - 0 1 @@ -2410,7 +2393,6 @@ microphone-sensitivity-medium-symbolic 1 1 0 - 0 1 @@ -2424,7 +2406,6 @@ microphone-sensitivity-medium-symbolic _Radio 1 1 - 0 1 @@ -2434,7 +2415,6 @@ microphone-sensitivity-medium-symbolic 1 1 0 - 0 1 @@ -2443,7 +2423,6 @@ microphone-sensitivity-medium-symbolic _Radio 1 1 - 0 1 @@ -2451,7 +2430,6 @@ microphone-sensitivity-medium-symbolic _Radio 1 - 0 1 @@ -2460,7 +2438,6 @@ microphone-sensitivity-medium-symbolic _Radio 1 0 - 0 1 @@ -2470,7 +2447,6 @@ microphone-sensitivity-medium-symbolic 1 1 0 - 0 1 @@ -2485,7 +2461,6 @@ microphone-sensitivity-medium-symbolic 1 - 0 _View 1 @@ -2495,7 +2470,6 @@ microphone-sensitivity-medium-symbolic _Dark theme 1 - 0 1 win.dark @@ -2505,7 +2479,6 @@ microphone-sensitivity-medium-symbolic _Toolbar 1 1 - 0 1 win.toolbar @@ -2515,7 +2488,6 @@ microphone-sensitivity-medium-symbolic _Statusbar 1 1 - 0 1 win.statusbar @@ -2524,7 +2496,6 @@ microphone-sensitivity-medium-symbolic _Select Background 1 - 0 1 win.background @@ -2536,7 +2507,6 @@ microphone-sensitivity-medium-symbolic 1 - 0 _Help 1 @@ -2546,7 +2516,6 @@ microphone-sensitivity-medium-symbolic _About 1 - 0 1 app.about diff --git a/gtk/gtkcheckmenuitem.c b/gtk/gtkcheckmenuitem.c index f7a40d1aba..b86a01b921 100644 --- a/gtk/gtkcheckmenuitem.c +++ b/gtk/gtkcheckmenuitem.c @@ -27,7 +27,6 @@ #include "gtkcheckmenuitemprivate.h" #include "gtkmenuitemprivate.h" #include "gtkaccellabel.h" -#include "deprecated/gtkactivatable.h" #include "deprecated/gtktoggleaction.h" #include "gtkmarshalers.h" #include "gtkprivate.h" @@ -107,22 +106,10 @@ static void gtk_check_menu_item_state_flags_changed (GtkWidget *widget, static void gtk_check_menu_item_direction_changed (GtkWidget *widget, GtkTextDirection previous_dir); -static void gtk_check_menu_item_activatable_interface_init (GtkActivatableIface *iface); -static void gtk_check_menu_item_update (GtkActivatable *activatable, - GtkAction *action, - const gchar *property_name); -static void gtk_check_menu_item_sync_action_properties (GtkActivatable *activatable, - GtkAction *action); - -static GtkActivatableIface *parent_activatable_iface; static guint check_menu_item_signals[LAST_SIGNAL] = { 0 }; -G_GNUC_BEGIN_IGNORE_DEPRECATIONS; G_DEFINE_TYPE_WITH_CODE (GtkCheckMenuItem, gtk_check_menu_item, GTK_TYPE_MENU_ITEM, - G_ADD_PRIVATE (GtkCheckMenuItem) - G_IMPLEMENT_INTERFACE (GTK_TYPE_ACTIVATABLE, - gtk_check_menu_item_activatable_interface_init)) -G_GNUC_END_IGNORE_DEPRECATIONS; + G_ADD_PRIVATE (GtkCheckMenuItem)) static void gtk_check_menu_item_size_allocate (GtkWidget *widget, @@ -258,86 +245,6 @@ gtk_check_menu_item_class_init (GtkCheckMenuItemClass *klass) gtk_widget_class_set_css_name (widget_class, "menuitem"); } -static void -gtk_check_menu_item_activatable_interface_init (GtkActivatableIface *iface) -{ - parent_activatable_iface = g_type_interface_peek_parent (iface); - iface->update = gtk_check_menu_item_update; - iface->sync_action_properties = gtk_check_menu_item_sync_action_properties; -} - -static void -gtk_check_menu_item_update (GtkActivatable *activatable, - GtkAction *action, - const gchar *property_name) -{ - GtkCheckMenuItem *check_menu_item; - gboolean use_action_appearance; - - check_menu_item = GTK_CHECK_MENU_ITEM (activatable); - - parent_activatable_iface->update (activatable, action, property_name); - - G_GNUC_BEGIN_IGNORE_DEPRECATIONS; - - if (strcmp (property_name, "active") == 0) - { - gtk_action_block_activate (action); - gtk_check_menu_item_set_active (check_menu_item, gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action))); - gtk_action_unblock_activate (action); - } - - use_action_appearance = gtk_activatable_get_use_action_appearance (activatable); - G_GNUC_END_IGNORE_DEPRECATIONS; - - if (!use_action_appearance) - return; - - if (strcmp (property_name, "draw-as-radio") == 0) - { - G_GNUC_BEGIN_IGNORE_DEPRECATIONS; - gtk_check_menu_item_set_draw_as_radio (check_menu_item, - gtk_toggle_action_get_draw_as_radio (GTK_TOGGLE_ACTION (action))); - G_GNUC_END_IGNORE_DEPRECATIONS; - } -} - -static void -gtk_check_menu_item_sync_action_properties (GtkActivatable *activatable, - GtkAction *action) -{ - GtkCheckMenuItem *check_menu_item; - gboolean use_action_appearance; - gboolean is_toggle_action; - - check_menu_item = GTK_CHECK_MENU_ITEM (activatable); - - parent_activatable_iface->sync_action_properties (activatable, action); - - G_GNUC_BEGIN_IGNORE_DEPRECATIONS; - is_toggle_action = GTK_IS_TOGGLE_ACTION (action); - G_GNUC_END_IGNORE_DEPRECATIONS; - - if (!is_toggle_action) - return; - - G_GNUC_BEGIN_IGNORE_DEPRECATIONS; - gtk_action_block_activate (action); - - gtk_check_menu_item_set_active (check_menu_item, gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action))); - gtk_action_unblock_activate (action); - use_action_appearance = gtk_activatable_get_use_action_appearance (activatable); - G_GNUC_END_IGNORE_DEPRECATIONS; - - if (!use_action_appearance) - return; - - G_GNUC_BEGIN_IGNORE_DEPRECATIONS; - gtk_check_menu_item_set_draw_as_radio (check_menu_item, - gtk_toggle_action_get_draw_as_radio (GTK_TOGGLE_ACTION (action))); - G_GNUC_END_IGNORE_DEPRECATIONS; -} - /** * gtk_check_menu_item_new: * diff --git a/gtk/gtkmenuitem.c b/gtk/gtkmenuitem.c index 68632ad2fd..29d30c1c3d 100644 --- a/gtk/gtkmenuitem.c +++ b/gtk/gtkmenuitem.c @@ -40,7 +40,6 @@ #include "gtkseparatormenuitem.h" #include "gtkprivate.h" #include "gtkbuildable.h" -#include "deprecated/gtkactivatable.h" #include "gtkwidgetprivate.h" #include "gtkintl.h" #include "gtksettings.h" @@ -123,10 +122,6 @@ enum { LAST_PROP, - /* activatable properties */ - PROP_ACTIVATABLE_RELATED_ACTION = LAST_PROP, - PROP_ACTIVATABLE_USE_ACTION_APPEARANCE, - PROP_ACTION_NAME, PROP_ACTION_TARGET }; @@ -195,32 +190,18 @@ static void gtk_menu_item_buildable_custom_finished(GtkBuildable *buildab gpointer user_data); static void gtk_menu_item_actionable_interface_init (GtkActionableInterface *iface); -static void gtk_menu_item_activatable_interface_init (GtkActivatableIface *iface); -static void gtk_menu_item_update (GtkActivatable *activatable, - GtkAction *action, - const gchar *property_name); -static void gtk_menu_item_sync_action_properties (GtkActivatable *activatable, - GtkAction *action); -static void gtk_menu_item_set_related_action (GtkMenuItem *menu_item, - GtkAction *action); -static void gtk_menu_item_set_use_action_appearance (GtkMenuItem *menu_item, - gboolean use_appearance); static guint menu_item_signals[LAST_SIGNAL] = { 0 }; static GParamSpec *menu_item_props[LAST_PROP]; static GtkBuildableIface *parent_buildable_iface; -G_GNUC_BEGIN_IGNORE_DEPRECATIONS; G_DEFINE_TYPE_WITH_CODE (GtkMenuItem, gtk_menu_item, GTK_TYPE_BIN, G_ADD_PRIVATE (GtkMenuItem) G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE, gtk_menu_item_buildable_interface_init) - G_IMPLEMENT_INTERFACE (GTK_TYPE_ACTIVATABLE, - gtk_menu_item_activatable_interface_init) G_IMPLEMENT_INTERFACE (GTK_TYPE_ACTIONABLE, gtk_menu_item_actionable_interface_init)) -G_GNUC_END_IGNORE_DEPRECATIONS; static void gtk_menu_item_set_action_name (GtkActionable *actionable, @@ -790,9 +771,6 @@ gtk_menu_item_class_init (GtkMenuItemClass *klass) g_object_class_install_properties (gobject_class, LAST_PROP, menu_item_props); - g_object_class_override_property (gobject_class, PROP_ACTIVATABLE_RELATED_ACTION, "related-action"); - g_object_class_override_property (gobject_class, PROP_ACTIVATABLE_USE_ACTION_APPEARANCE, "use-action-appearance"); - g_object_class_override_property (gobject_class, PROP_ACTION_NAME, "action-name"); g_object_class_override_property (gobject_class, PROP_ACTION_TARGET, "action-target"); @@ -811,9 +789,6 @@ gtk_menu_item_init (GtkMenuItem *menu_item) gtk_widget_set_has_window (GTK_WIDGET (menu_item), FALSE); - priv->action = NULL; - priv->use_action_appearance = TRUE; - priv->submenu = NULL; priv->toggle_size = 0; priv->accelerator_width = 0; @@ -822,9 +797,7 @@ gtk_menu_item_init (GtkMenuItem *menu_item) else priv->submenu_direction = GTK_DIRECTION_RIGHT; priv->submenu_placement = GTK_TOP_BOTTOM; - priv->use_action_appearance = TRUE; priv->timer = 0; - priv->action = NULL; widget_node = gtk_widget_get_css_node (GTK_WIDGET (menu_item)); priv->gadget = gtk_css_custom_gadget_new_for_node (widget_node, @@ -900,15 +873,6 @@ gtk_menu_item_dispose (GObject *object) g_clear_object (&priv->action_helper); - if (priv->action) - { - G_GNUC_BEGIN_IGNORE_DEPRECATIONS; - gtk_action_disconnect_accelerator (priv->action); - gtk_activatable_do_set_related_action (GTK_ACTIVATABLE (menu_item), NULL); - G_GNUC_END_IGNORE_DEPRECATIONS; - priv->action = NULL; - } - g_clear_object (&priv->arrow_gadget); g_clear_object (&priv->gadget); @@ -937,12 +901,6 @@ gtk_menu_item_set_property (GObject *object, case PROP_USE_UNDERLINE: gtk_menu_item_set_use_underline (menu_item, g_value_get_boolean (value)); break; - case PROP_ACTIVATABLE_RELATED_ACTION: - gtk_menu_item_set_related_action (menu_item, g_value_get_object (value)); - break; - case PROP_ACTIVATABLE_USE_ACTION_APPEARANCE: - gtk_menu_item_set_use_action_appearance (menu_item, g_value_get_boolean (value)); - break; case PROP_ACTION_NAME: gtk_menu_item_set_action_name (GTK_ACTIONABLE (menu_item), g_value_get_string (value)); break; @@ -978,12 +936,6 @@ gtk_menu_item_get_property (GObject *object, case PROP_USE_UNDERLINE: g_value_set_boolean (value, gtk_menu_item_get_use_underline (menu_item)); break; - case PROP_ACTIVATABLE_RELATED_ACTION: - g_value_set_object (value, priv->action); - break; - case PROP_ACTIVATABLE_USE_ACTION_APPEARANCE: - g_value_set_boolean (value, priv->use_action_appearance); - break; case PROP_ACTION_NAME: g_value_set_string (value, gtk_action_helper_get_action_name (priv->action_helper)); break; @@ -1082,211 +1034,6 @@ gtk_menu_item_buildable_custom_finished (GtkBuildable *buildable, parent_buildable_iface->custom_finished (buildable, builder, child, tagname, user_data); } - -static void -gtk_menu_item_activatable_interface_init (GtkActivatableIface *iface) -{ - iface->update = gtk_menu_item_update; - iface->sync_action_properties = gtk_menu_item_sync_action_properties; -} - -static void -activatable_update_label (GtkMenuItem *menu_item, GtkAction *action) -{ - GtkWidget *child; - - child = gtk_bin_get_child (GTK_BIN (menu_item)); - - if (GTK_IS_LABEL (child)) - { - const gchar *label; - - G_GNUC_BEGIN_IGNORE_DEPRECATIONS; - label = gtk_action_get_label (action); - G_GNUC_END_IGNORE_DEPRECATIONS; - gtk_menu_item_set_label (menu_item, label); - } -} - -/* - * gtk_menu_is_empty: - * @menu: (allow-none): a #GtkMenu or %NULL - * - * Determines whether @menu is empty. A menu is considered empty if it - * the only visible children are “filler” menu items which were - * inserted to mark the menu as empty. - * - * This function is used by #GtkAction. - * - * Returns: whether @menu is empty. - **/ -static gboolean -gtk_menu_is_empty (GtkWidget *menu) -{ - GList *children, *cur; - gboolean result = TRUE; - - g_return_val_if_fail (menu == NULL || GTK_IS_MENU (menu), TRUE); - - if (!menu) - return FALSE; - - children = gtk_container_get_children (GTK_CONTAINER (menu)); - - cur = children; - while (cur) - { - if (gtk_widget_get_visible (cur->data)) - { - if (!g_object_get_data (cur->data, "gtk-empty-menu-item")) - { - result = FALSE; - break; - } - } - cur = cur->next; - } - g_list_free (children); - - return result; -} - - -static void -gtk_menu_item_update (GtkActivatable *activatable, - GtkAction *action, - const gchar *property_name) -{ - GtkMenuItem *menu_item = GTK_MENU_ITEM (activatable); - GtkMenuItemPrivate *priv = menu_item->priv; - - if (strcmp (property_name, "visible") == 0) - { - G_GNUC_BEGIN_IGNORE_DEPRECATIONS; - _gtk_action_sync_menu_visible (action, GTK_WIDGET (menu_item), - gtk_menu_is_empty (gtk_menu_item_get_submenu (menu_item))); - G_GNUC_END_IGNORE_DEPRECATIONS; - } - else if (strcmp (property_name, "sensitive") == 0) - { - G_GNUC_BEGIN_IGNORE_DEPRECATIONS; - gtk_widget_set_sensitive (GTK_WIDGET (menu_item), gtk_action_is_sensitive (action)); - G_GNUC_END_IGNORE_DEPRECATIONS; - } - else if (priv->use_action_appearance) - { - if (strcmp (property_name, "label") == 0) - activatable_update_label (menu_item, action); - } -} - -static void -gtk_menu_item_sync_action_properties (GtkActivatable *activatable, - GtkAction *action) -{ - GtkMenuItem *menu_item = GTK_MENU_ITEM (activatable); - GtkMenuItemPrivate *priv = menu_item->priv; - GtkWidget *label; - - if (!priv->use_action_appearance || !action) - { - label = gtk_bin_get_child (GTK_BIN (menu_item)); - - if (GTK_IS_ACCEL_LABEL (label)) - gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (label), GTK_WIDGET (menu_item)); - } - - if (!action) - return; - - _gtk_action_sync_menu_visible (action, GTK_WIDGET (menu_item), - gtk_menu_is_empty (gtk_menu_item_get_submenu (menu_item))); - - G_GNUC_BEGIN_IGNORE_DEPRECATIONS; - gtk_widget_set_sensitive (GTK_WIDGET (menu_item), gtk_action_is_sensitive (action)); - G_GNUC_END_IGNORE_DEPRECATIONS; - - if (priv->use_action_appearance) - { - label = gtk_bin_get_child (GTK_BIN (menu_item)); - - /* make sure label is a label, deleting it otherwise */ - if (label && !GTK_IS_LABEL (label)) - { - gtk_container_remove (GTK_CONTAINER (menu_item), label); - label = NULL; - } - /* Make sure that menu_item has a label and that any - * accelerators are set */ - gtk_menu_item_ensure_label (menu_item); - gtk_menu_item_set_use_underline (menu_item, TRUE); - /* Make label point to the menu_item's label */ - label = gtk_bin_get_child (GTK_BIN (menu_item)); - - G_GNUC_BEGIN_IGNORE_DEPRECATIONS; - if (GTK_IS_ACCEL_LABEL (label) && gtk_action_get_accel_path (action)) - { - gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (label), NULL); - gtk_accel_label_set_accel_closure (GTK_ACCEL_LABEL (label), - gtk_action_get_accel_closure (action)); - } - G_GNUC_END_IGNORE_DEPRECATIONS; - - activatable_update_label (menu_item, action); - } -} - -static void -gtk_menu_item_set_related_action (GtkMenuItem *menu_item, - GtkAction *action) -{ - GtkMenuItemPrivate *priv = menu_item->priv; - - if (priv->action == action) - return; - - G_GNUC_BEGIN_IGNORE_DEPRECATIONS; - - if (priv->action) - { - gtk_action_disconnect_accelerator (priv->action); - } - - if (action) - { - const gchar *accel_path; - - accel_path = gtk_action_get_accel_path (action); - if (accel_path) - { - gtk_action_connect_accelerator (action); - gtk_menu_item_set_accel_path (menu_item, accel_path); - } - } - - gtk_activatable_do_set_related_action (GTK_ACTIVATABLE (menu_item), action); - - G_GNUC_END_IGNORE_DEPRECATIONS; - - priv->action = action; -} - -static void -gtk_menu_item_set_use_action_appearance (GtkMenuItem *menu_item, - gboolean use_appearance) -{ - GtkMenuItemPrivate *priv = menu_item->priv; - - if (priv->use_action_appearance != use_appearance) - { - priv->use_action_appearance = use_appearance; - - G_GNUC_BEGIN_IGNORE_DEPRECATIONS; - gtk_activatable_sync_action_properties (GTK_ACTIVATABLE (menu_item), priv->action); - G_GNUC_END_IGNORE_DEPRECATIONS; - } -} - static void update_node_classes (GtkMenuItem *menu_item) { @@ -1647,15 +1394,8 @@ gtk_real_menu_item_activate (GtkMenuItem *menu_item) { GtkMenuItemPrivate *priv = menu_item->priv; - G_GNUC_BEGIN_IGNORE_DEPRECATIONS; - if (priv->action_helper) gtk_action_helper_activate (priv->action_helper); - - if (priv->action) - gtk_action_activate (priv->action); - - G_GNUC_END_IGNORE_DEPRECATIONS; } diff --git a/gtk/gtkmenuitemprivate.h b/gtk/gtkmenuitemprivate.h index 910cacb312..a59e84bb6c 100644 --- a/gtk/gtkmenuitemprivate.h +++ b/gtk/gtkmenuitemprivate.h @@ -38,7 +38,6 @@ struct _GtkMenuItemPrivate gchar *accel_path; - GtkAction *action; GtkActionHelper *action_helper; GtkCssGadget *gadget; @@ -48,7 +47,6 @@ struct _GtkMenuItemPrivate guint submenu_direction : 1; guint right_justify : 1; guint from_menubar : 1; - guint use_action_appearance : 1; guint reserve_indicator : 1; }; -- 2.30.2